//
// Description: 338. 计数问题
// Created by Loading on 2022/6/4.
//

#include <bits/stdc++.h>

using namespace std;

// 得到 num 第 l 位到第 r 位的整数是多少，注意 num 是逆序存储
int get(vector<int> &num, int l, int r) {
    int res = 0;
    for (int i = l; i >= r; --i) {
        res = res * 10 + num[i];
    }

    return res;
}

// 统计 1~n 中 x 出现的次数
int count(int n, int x) {
    if (!n) {
        return 0;
    }

    // 存储 n 的每一位，逆序
    vector<int> num;
    while (n) {
        num.emplace_back(n % 10);
        n /= 10;
    }

    n = num.size();
    int res = 0;
    // 枚举每一位 x 出现的次数，从最高位开始
    /* 最高位不可取 0，i 第一次要 - !x，即，如果 x 为0，则从第二位开始枚举 */
    for (int i = n - 1 - !x; i >= 0; --i) {
        // 第 i 位的高位从 0 开始，取到所有高位组成的数 - 1
        if (i < n - 1) {
            res += get(num, n - 1, i + 1) * (int) pow(10, i);
            // 如果求 0 出现的次数，则 0 的高位不能全是 0，要从 1 开始，所以减掉 1 倍的 pow(10, i)
            if (!x) {
                res -= (int) pow(10, i);
            }
        }

        // 高位全部相等，第 i 位等于 x 时，低位从 0 开始，取到所有低位组成的数
        if (num[i] == x) {
            res += get(num, i - 1, 0) + 1;
        } else if (num[i] > x) {
            // 高位全部相等，第 i 位大于 x 时，低位可随意取值
            res += (int) pow(10, i);
        }
    }

    return res;
}

int main() {
    int a, b;
    while (cin >> a >> b && a && b) {
        if (a > b) {
            swap(a, b);
        }

        // 利用前缀和思想，统计 a~b 中 i 出现的次数，等价于 1~b 中出现的次数 - 1~a-1 中出现的次数
        for (int i = 0; i < 10; ++i) {
            cout << count(b, i) - count(a - 1, i) << ' ';
        }
        cout << endl;
    }

    return 0;
}